package com.tedu.api.ee;

import org.junit.Test;

import java.io.*;

///**
// * 流---传输数据---传输出数据过程绝对不能出错【处理手段】
// * 标准流结合异常---标准IO
// *
// * 异常
// * Java面向对象语言：程序中所出现的所有错误，定义为对象【处理对应错误】
// *
// * Throwable顶级异常超类(父类)
// * Exception异常：描述程序级别的错误---有解决方案
// *                编译期：RunTimeException异常表示类
// *                       FileOutStream创建对象--波浪线--抛出方法之外
// *                 检查异常：通常都是编译器检查处理，程序直接报错，抛出
// *                       解决方案：①捕获异常
// *
// *                                ②抛出异常---抛出方法之外---打印控制台
// *                运行期：控制台直接显示异常对象【异常对象名字，产生原因】
// *                非检查异常：控制台直接输出异常对象名称RunTimeException异常表示类
// *                【throw与throws---RunTimeException】
// *
// * Error错误：描述程序级别的错误---出现---程序宕机
// *            非常低--->递归：自己调自己【方法】--->
// *
// */
//public class EE {
//    /**
//     * Error   错误---程序严重错误
//     * 模拟：方法调方法---栈溢出错误
//     * StackOverflowError栈溢出错误
//     * ----程序宕机---
//     * while(true){
//     *     拼接字符串对象
//     * }
//     */
//    public static void method(){
//        method();
//    }
//  //  @Test
// // public void testError(){
//    //    EE.method();
//    //}
//    /**
//     * Exception异常：检查异常【出现编译期】---代码异常
//     *               两种异常：①捕获异常
//     *                       语法：try{
//     *                           怀疑代码可能有异常或者提示异常
//     *                       }catch(小异常名字  e){
//     *                           e.printStacktrace();打印异常信息
//     *                       }catch(中异常名字  e){
//     *                           e.printStacktrace();打印异常信息
//     *                       }catch(大异常名字  e){  Exception
//     *                           e.printStacktrace();打印异常信息
//     *                       }finally{
//     *                                    一定执行代码块
//     *                       }
//     *                       ②抛出异常  throws  异常名字
//     *                       考试题：throw与throws的区别
//     *  * 异常关键字：throw----主动抛出异常
//     *  *           throws ---抛出异常不解决
//     *             非检查异常【出现运行期】---代码无错误---控制台
//     * --------------------------------
//     * 异常：FileNotFoundException   文件不存在异常
//     * 产生原因：路径错误、文件名写错
//     * 异常：NullPointerException    空指针异常
//     * 产生原因：获取字符串为空，数组：值为空，集合：元素为空【存在null值】
//     * 异常:StringIndexOutOfBoundsException   字符串下标越界异常
//     * 产生原因：字符串下标没有对应的字符
//     * 异常：NumberFormatException   数字转换异常
//     * 产生原因：字符串不是正确的类型
//     *
//     */
////@Test
//   // public void testException() throws FileNotFoundException {
//    //检查异常【出现编译期】---代码报波浪线
//  //  FileOutputStream fis=new FileOutputStream("");
//    //非检查异常【出现在控制台】----控制台
////    try {
////        String str="a";
////        str.length();
////        str.charAt(1);
////        Integer.parseInt(str);//把字符串转换为数字【解析字符串---转换为对应类型】
////    }catch(StringIndexOutOfBoundsException e){
////        e.printStackTrace();  //打印异常对象信息
////        System.out.println("字符串小异常：下标越界异常~~");
////    }
////    catch (NumberFormatException e) {
////        e.printStackTrace();
////        System.out.println("字符串小异常~~");
////    }catch(Exception e){
////        e.printStackTrace();
////        System.out.println("大异常~~");
////    }
////     finally {
////        System.out.println("一定执行代码块~");
////    }
////
////}
///**
// * 作业1：写出5个【非检查】异常的代码示例
// * 提示：查API---Java.lang. 异常
// *        字符串，包装类，集合，IO流
// */
//@Test
//public void testHomeWork1(){
//
//
//}
//@Test
//public void testFOS(){//一：testFOS
//    FileOutputStream fos=null;//1.置空流
//    BufferedOutputStream bos=null;
//    try {
//
//        fos=new FileOutputStream("fos.txt");
//        bos=new BufferedOutputStream(fos);
//        bos.write(("独一无二"+"叶珂").getBytes());
//        bos.flush();
//    }catch(FileNotFoundException e){
//        //小异常
//        e.printStackTrace();
//    }
//    catch (IOException e) {
//        e.printStackTrace();
//    }catch(Exception e){
//        //大异常
//        e.printStackTrace();
//    }
//    finally {
//        //3.关闭
//if (bos!=null){
//    try {
//        bos.close();
//    } catch (IOException e) {
//        e.printStackTrace();
//    }
//}
//    }
//
//}
//@Test
//        public void testFIS(){
//    FileInputStream fis=null;
//    byte[] data=new byte[0];
//    int len=0;
//    try {
//        fis=new FileInputStream("fos.txt");
//        fis.read(data);
//        String str=new String(data,0,len);
//    }catch(FileNotFoundException e){
//        e.printStackTrace();
//    }
//    catch (IOException e) {
//        e.printStackTrace();
//    }catch(Exception e){
//        e.printStackTrace();
//    }
//    finally {
//        if (fis!=null){
//            try {
//                fis.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//    }
//}
//@Test
//public void testCV(){
//    FileOutputStream fos=null;
//    FileInputStream fis=null;
//    int len=-1;
//    byte[] data=new byte[0];
//    try {
//        while ((len=fis.read(data))!=-1){
//            fos.write(data,0,len);
//        }
//        fos.write(len);
//    }catch(FileNotFoundException e){
//        e.printStackTrace();
//    }
//    catch (IOException e) {
//        e.printStackTrace();
//    }catch(Exception e){
//        e.printStackTrace();
//    }
//    finally {
//        if (fos!=null){
//            try {
//                fos.close();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//
//        }    }
//}
//
//@Test
//    public void testCVS(){
//    FileInputStream fis=null;
//    BufferedInputStream bos=null;
//    FileOutputStream fos=null;
//    BufferedOutputStream bas=null;
//
//    long star= 0;
//
//        fis=new FileInputStream("高效视频.mp4");
//        bos=new BufferedInputStream(fis);
//        int len=-1;
//        star = System.currentTimeMillis();
//        while((len=bos.read())!=-1){
//            bas.write(len);
//
//
//    long end=System.currentTimeMillis();
//    System.out.println("缓冲区【自带缓冲区：】"+(end-star)+"毫秒数");
//}
//
//
//
//
//}